/* 引入模拟数据 */
import other from './data/other';
import goods from './data/goods';
import classfy from './data/classify.data.js';
import carts from './data/cart-goods.js';
import orders from './data/orders.js';

/* 封装请求轮播图的函数 */
/* sort参数：排序方式 */

export function apiBanner(sort){
	// promise 异步编程
	// resolve参数：异步操作成功的结果捕获
	// reject参数：异步操作失败的结果捕获
	return new Promise( (resolve , reject)=>{
		// 定时只是模拟请求的延时
		setTimeout( ()=>{
			try{
				let list = [];  //接受请求结果
				// 根据sort传递过来的关键字确认排序方式
				/* 请求到数据后的操作 */
				switch( sort ){
					case 'asc' :
						list = [...other[0].list];
					break;
					case 'desc':
						list = other[0].list.reverse();
					break;
				}
				/* 请求到数据后的操作 */
				resolve(list); //请求最终的数据
			}catch(e){
				reject(e); //操作失败
			}
		},1000)
	})
}

/* 封装请求选项卡标题的函数 */
export function apiIndexTabs(){
	return new Promise( (resolve , reject)=>{
		setTimeout( ()=>{
			try{
				let list = other[1].list;
				resolve(list);
			}catch(e){
				reject(e); 
			}
		} , 1000)
	})
}

/* 封装请求分类导航的数据（先不考虑分页） */
/* 
 P:获取当前页码
 num:每页条数
 tabname:选项卡关键字
*/
export function apiGoods(p,num,tabname){
	return new Promise( (resolve , reject)=>{
		setTimeout( ()=>{
			try{
				let list = [] , result = [];
				switch(tabname){
					case '全部' :
						list = [...goods];
					break;
					// 剩余所有关键字都执行相同的逻辑
					default:
						let arr = tabname.split('');
						// 遍历商品
						goods.forEach((item)=>{
							// 遍历关键词
							for(let val of arr){
								// 只要商品名称中匹配上关键字的任意一个那么都将结果传递出去
								if(item.goodName.indexOf(val) != -1){
									list.push(item);
									// 终止当前关键字继续
									break;
								}
							}
						})
				}
				// 计算出总页数
				let sumPages = Math.ceil(list.length / num);
				// 当前页码是否小于等于总页数；成立了才能截取数组
				if( p <= sumPages){
					for(let i=(p-1)*num;i<p*num;i++){
						// 当i等于查询后的数组长度，断掉循环
						if(i == list.length) break;
						// 否则将当前循环的元素添加到result传递
						result.push(list[i]);
					}
				}
				
				resolve(result);
			}catch(e){
				reject(e); 
			}
		},1000)
	})
}

export function apiGood(id){
	return new Promise( (resolve,reject)=>{
		setTimeout( ()=>{
			try{
				let obj = {};
				goods.forEach((item)=>{
					if(item.id == id){
						obj = item;
					}
				})
				resolve(obj)
			}catch(e){
				reject(e)
			}
		},1000)
	})
}

export function apiClassfy(){
	return new Promise( (resolve , reject)=>{
		setTimeout( ()=>{
			try{
				let list = [];
				list = [...classfy];
				resolve(list);
			}catch(e){
				reject(e)
			}
		} ,1000)
	})
}

export function apiCart(){
	return new Promise( ( resolve,reject)=>{
		setTimeout( ()=>{
			try{
				let list = [];
				list = [...carts];
				resolve(list);
			}catch(e){
				reject(e)
			}
		} ,1000)
	})
}

/*请求分类导航数据*/
export function apiGoodDamn(p, num, val ){
	//promise异步编程
	return new Promise((resolve , reject)=>{
		//定时器只是模仿请求的延时
		setTimeout(function(){
			try{
				let list = [] , result=[];  //接受请求结果
				switch(val){
					case '全部':
					list=[...goods];
					console.log(list);
					break;
					default:
					let msg = val.split('');
					console.log(msg)
					 goods.forEach((item)=>{
						 //遍历商品关键词
						 for(let m of msg){
							 if(item.goodName.indexOf(m) != -1){
									list.push(item);
									//只要商品名称中匹配上关键字的任意一个那么都将结果传递出去
									break;
							} }
						
					});
					console.log(list);
					break;
				}
				//计算出总页数
				let sumPages = Math.ceil(list.length/num);
				//当前页码是否小于等于总页数：成立了才能需截取数组
				if(p <= sumPages){
					for(let i=(p-1)*num; i<p*num; i++){
						//当i等于查询后的数组长度，断掉循环
						if(i == list.length)break;
						//否则将当前循环的元素添加到result传递
						result.push(list[i]);
					}
				}
				// 请求到数据后的操作
				
				resolve({list:result,total:list.length}); //请求最终的数据
			}catch(e){
				reject(e); //操作失败的结果
			}
		},1000)
	})
}
export function apiOrders() {
	return new Promise((reslove, reject) => {
		setTimeout(() => {
			try {
				let list = [];
				list = [...orders]
				reslove(list)
			} catch (e) {
				reject(e)
			}
		}, 1000)
	})
}